package com.aspire.boc.mms.wmf.service;

import java.util.HashSet;
import java.util.List;
import java.util.Map;

import com.aspire.boc.mms.wmf.model.WmfAction;
import com.aspire.boc.mms.wmf.model.WmfResource;
import com.aspire.boc.mms.wmf.model.WmfRole;
import com.aspire.boc.mms.wmf.model.WmfRoleAuth;

public interface PermissionService {
	/**
	 * 
	 * @Title: getAllActions 
	 * @Description: TODO(查看所有的功能操作) 
	 * @return
	 */
	List<WmfAction> getAllActions();
	
	/**
	 * 
	 * @Title: insertGroupRole 
	 * @Description: TODO(组和角色关联) 
	 * @param groupid
	 * @param roleid
	 * @return
	 */
	int insertGroupRole(String groupid,String roleid);
	
	/**
	 * 
	 * @Title: queryActionByRId 
	 * @Description: TODO(查询操作按钮通过资源编号) 
	 * @param resourceId
	 * @return
	 */
	List<WmfAction> queryActionByRId(Integer resourceId);
	
	/**
	 * 通过组获取角色
	 * @Title: getWmfRolesByGId 
	 * @Description: TODO(这里用一句话描述这个方法的作用) 
	 * @param groupId
	 * @return
	 */
	List<WmfRole> getWmfRolesByGId(String groupId);
	
	/**
	 * 
	 * @Title: getWmfRolesByGId 
	 * @Description: TODO(这里用一句话描述这个方法的作用) 
	 * @param groupIds
	 * @return
	 */
	List<WmfRole> getWmfRolesByGId(List<String> groupIds) ;
	
	/**
	 * 通过角色获取菜单
	 * @Title: getRouserceByRole 
	 * @Description: TODO(这里用一句话描述这个方法的作用) 
	 * @param roleIds
	 * @return
	 */
	List<WmfResource> getRouserceByRole(List<String> roleIds);
	
	
	/**
	 * 通过角色获取操作项
	 * @Title: getRouserceByRole 
	 * @Description: TODO(这里用一句话描述这个方法的作用) 
	 * @param roleIds
	 * @return
	 */
	List<Integer> getActionsByRole(List<String> roleIds);
	
	/**
	 * 角色和菜单获取功能
	 * @Title: getActionsByRR 
	 * @Description: TODO(这里用一句话描述这个方法的作用) 
	 * @param resourceId
	 * @param roleId
	 * @return
	 */
	List<WmfAction> getActionsByRR(Integer resourceId,String roleId);

	/**
	 * 获取角色
	 * @Title: getRolesPage 
	 * @Description: TODO(这里用一句话描述这个方法的作用) 
	 * @param start
	 * @param limit
	 * @return
	 */
	List<WmfRole> getRolesPage(String groupId ,int start, int limit);
	
	/**
	 * 
	 * @Title: insertWmfRole 
	 * @Description: TODO(添加角色信息) 
	 * @param wmfRole
	 * @return
	 */
	int insertWmfRole(WmfRole wmfRole);

	/**
	 * 
	 * @Title: deleteWmfRole 
	 * @Description: TODO(删除角色) 
	 * @param ids
	 * @return
	 * @throws Exception
	 */
	void deleteWmfRole(String ids) throws Exception;
	
	/**
	 * 
	 * @Title: deleteWmfGroupRole 
	 * @Description: TODO(删除组角色) 
	 * @param ids
	 * @throws Exception
	 */
	void deleteWmfGroupRole(String ids) throws Exception;
	
	/**
	 * 删除组含角色关系
	 * @param groupId
	 * @param roleId
	 * @throws Exception
	 */
	void deleteWmfGroupRole(String groupId, List<String> roleIds) throws Exception;

	/**
	 * 
	 * @Title: updateWmfRole 
	 * @Description: TODO(修改角色信息非关联处理) 
	 * @param _wmfRole
	 * @return
	 */
	int updateWmfRole(WmfRole _wmfRole);

	/**
	 * 
	 * @Title: updateRoleAuth 
	 * @Description: TODO(修改角色权限) 
	 * @param authMap
	 * @throws Exception 
	 */
	void updateRoleAuth(Map<String, Object> authMap,String roleId,String resourceid) throws Exception;

	
    /**
     * 获取已经授权的权限
     * @Title: getActionAuth 
     * @Description: TODO(这里用一句话描述这个方法的作用) 
     * @param actions
     * @return
     */
	List<WmfRoleAuth> getActionAuth(List<WmfAction> actions);
	
	/**
	 * 获取一级管理员角色
	 * @return
	 */
	WmfRole getAdminLevel1();
	
	/**
	 * 获取组权限数量
	 * @Title: getRolesCount 
	 * @Description: TODO(获取组权限数量) 
	 * @param clickGroupId
	 * @return
	 */
	long getRolesCount(String clickGroupId);
	
	/**
	 * 获取用户已授权的.do列表
	 * @param roleIds
	 * @return
	 */
	HashSet<String> getUserActiondos(List<String> roleIds);
	
	/**
	 * 获取已关联角色群组
	 * @return
	 */
	List<Integer> getRoleAuthorizedGroupIds();
	
}